diff --git a/system/libraries/Calendar.php b/system/libraries/Calendar.php
index 8c7d95a..8cf1517 100644
--- a/system/libraries/Calendar.php
+++ b/system/libraries/Calendar.php
@@ -48,7 +48,7 @@
 	function CI_Calendar()
 	{		
 		$this->obj =& get_instance();
-		if ( ! in_array('calendar_lang'.EXT, $this->obj->lang->is_loaded))
+		if ( ! in_array('calendar_lang'.EXT, $this->obj->lang->is_loaded, TRUE))
 		{
 			$this->obj->lang->load('calendar');
 		}
@@ -458,7 +458,7 @@
 			}
 			else
 			{
-				if (in_array($val, $today))
+				if (in_array($val, $today, TRUE))
 				{
 					$this->temp[$val] = $this->temp[str_replace('_today', '', $val)];
 				}
diff --git a/system/libraries/Config.php b/system/libraries/Config.php
index 108c94a..26770cc 100644
--- a/system/libraries/Config.php
+++ b/system/libraries/Config.php
@@ -63,7 +63,7 @@
 	{
 		$file = ($file == '') ? 'config' : str_replace(EXT, '', $file);
 	
-		if (in_array($file, $this->is_loaded))
+		if (in_array($file, $this->is_loaded, TRUE))
 		{                
 			return TRUE;
 		}
diff --git a/system/libraries/Controller.php b/system/libraries/Controller.php
index f00a726..ff914d1 100644
--- a/system/libraries/Controller.php
+++ b/system/libraries/Controller.php
@@ -239,7 +239,7 @@
 		}
 		
 		$obj =& get_instance();
-		if (in_array($name, $obj->_ci_models))
+		if (in_array($name, $obj->_ci_models, TRUE))
 		{
 			return;
 		}		
@@ -350,7 +350,7 @@
 		
 		foreach ($autoload['libraries'] as $item)
 		{
-			if ( ! in_array($item, $exceptions))
+			if ( ! in_array($item, $exceptions, TRUE))
 			{
 				$this->_ci_load_class($item);
 			}
@@ -566,7 +566,7 @@
 		
 		if (class_exists('Scaffolding')) return;
 			
-		if ( ! in_array($this->uri->segment(3), array('add', 'insert', 'edit', 'update', 'view', 'delete', 'do_delete')))
+		if ( ! in_array($this->uri->segment(3), array('add', 'insert', 'edit', 'update', 'view', 'delete', 'do_delete'), TRUE))
 		{
 			$method = 'view';
 		}
diff --git a/system/libraries/Email.php b/system/libraries/Email.php
index 5b991d1..55edd62 100644
--- a/system/libraries/Email.php
+++ b/system/libraries/Email.php
@@ -467,7 +467,7 @@
 	 */	
 	function set_protocol($protocol = 'mail')
 	{ 
-		$this->protocol = ( ! in_array($protocol, $this->_protocols)) ? 'mail' : strtolower($protocol);
+		$this->protocol = ( ! in_array($protocol, $this->_protocols, TRUE)) ? 'mail' : strtolower($protocol);
 	}
   	// END set_protocol()
   	
@@ -564,7 +564,7 @@
 	function _get_protocol($return = true)
 	{
 		$this->protocol = strtolower($this->protocol);
-		$this->protocol = ( ! in_array($this->protocol, $this->_protocols)) ? 'mail' : $this->protocol;
+		$this->protocol = ( ! in_array($this->protocol, $this->_protocols, TRUE)) ? 'mail' : $this->protocol;
 		
 		if ($return == true) 
 			return $this->protocol;
@@ -584,7 +584,7 @@
 	{		
 		$this->_encoding = ( ! in_array($this->_encoding, $this->_bit_depths)) ? '7bit' : $this->_encoding;
 		
-		if ( ! in_array($this->charset, $this->_base_charsets)) 
+		if ( ! in_array($this->charset, $this->_base_charsets, TRUE)) 
 			$this->_encoding = "8bit";
 			
 		if ($return == true) 
diff --git a/system/libraries/Image_lib.php b/system/libraries/Image_lib.php
index 18e3253..ca1d747 100644
--- a/system/libraries/Image_lib.php
+++ b/system/libraries/Image_lib.php
@@ -398,7 +398,7 @@
 		// Allowed rotation values		
 		$degs = array(90, 180, 270, 'vrt', 'hor');	
 	
-		if ($this->rotation_angle == '' OR ! in_array($this->rotation_angle, $degs))
+		if ($this->rotation_angle == '' OR ! in_array($this->rotation_angle, $degs, TRUE))
 		{
 			$this->set_error('imglib_rotation_angle_required');
 			return FALSE;       	
diff --git a/system/libraries/Language.php b/system/libraries/Language.php
index 41dab46..dabfd41 100644
--- a/system/libraries/Language.php
+++ b/system/libraries/Language.php
@@ -54,7 +54,7 @@
 	{	
 		$langfile = str_replace(EXT, '', str_replace('_lang.', '', $langfile)).'_lang'.EXT;
 		
-		if (in_array($langfile, $this->is_loaded))
+		if (in_array($langfile, $this->is_loaded, TRUE))
 		{
 			return;
 		}
diff --git a/system/libraries/Unit_test.php b/system/libraries/Unit_test.php
index d3e1513..78b92ed 100644
--- a/system/libraries/Unit_test.php
+++ b/system/libraries/Unit_test.php
@@ -57,7 +57,7 @@
 		if ($this->active == FALSE)
 			return;
 			
-		if ($expected !== 0 AND in_array($expected, array('is_string', 'is_bool', 'is_true', 'is_false', 'is_int', 'is_numeric', 'is_float', 'is_double', 'is_array', 'is_null')))
+		if (in_array($expected, array('is_string', 'is_bool', 'is_true', 'is_false', 'is_int', 'is_numeric', 'is_float', 'is_double', 'is_array', 'is_null'), TRUE))
 		{
 			$expected = str_replace('is_float', 'is_double', $expected);
 			$result = ($expected($test)) ? TRUE : FALSE;	
diff --git a/system/libraries/Upload.php b/system/libraries/Upload.php
index 091c6c3..37fccdf 100644
--- a/system/libraries/Upload.php
+++ b/system/libraries/Upload.php
@@ -454,7 +454,7 @@
                            );
     
 
-		return (in_array($this->file_type, $img_mimes)) ? TRUE : FALSE;
+		return (in_array($this->file_type, $img_mimes, TRUE)) ? TRUE : FALSE;
     }
 	
 	// --------------------------------------------------------------------
@@ -479,7 +479,7 @@
     	
     		if (is_array($mime))
     		{
-    			if (in_array($this->file_type, $mime))
+    			if (in_array($this->file_type, $mime, TRUE))
     			{
     				return TRUE;
     			}
diff --git a/system/libraries/Validation.php b/system/libraries/Validation.php
index 80ee6a5..7db67a3 100644
--- a/system/libraries/Validation.php
+++ b/system/libraries/Validation.php
@@ -187,7 +187,7 @@
 			$ex = explode('|', $rules);
 
 			// Is the field required?  If not, if the field is blank  we'll move on to the next text
-			if ( ! in_array('required', $ex) AND strpos($rules, 'callback_') === FALSE)
+			if ( ! in_array('required', $ex, TRUE) AND strpos($rules, 'callback_') === FALSE)
 			{
 				if ( ! isset($_POST[$field]) OR $_POST[$field] == '')
 				{
@@ -206,7 +206,7 @@
 			 */
 			if ( ! isset($_POST[$field]))
 			{			
-				if (in_array('isset', $ex) OR in_array('required', $ex))
+				if (in_array('isset', $ex, TRUE) OR in_array('required', $ex))
 				{
 					if ( ! isset($this->_error_messages['isset'])) 
 					{
@@ -268,7 +268,7 @@
 					$result = $this->obj->$rule($_POST[$field], $param);	
 					
 					// If the field isn't required and we just processed a callback we'll move on...
-					if ( ! in_array('required', $ex) AND $result !== FALSE)
+					if ( ! in_array('required', $ex, TRUE) AND $result !== FALSE)
 					{
 						continue 2;
 					}
diff --git a/system/libraries/Xmlrpc.php b/system/libraries/Xmlrpc.php
index f907854..4cb16f7 100644
--- a/system/libraries/Xmlrpc.php
+++ b/system/libraries/Xmlrpc.php
@@ -854,7 +854,7 @@
 		else
 		{
 			// not top level element: see if parent is OK
-			if (!in_array($this->xh[$the_parser]['stack'][0], $this->valid_parents[$name]))
+			if (!in_array($this->xh[$the_parser]['stack'][0], $this->valid_parents[$name], TRUE))
 			{
 				$this->xh[$the_parser]['isf'] = 2;
 				$this->xh[$the_parser]['isf_reason'] = "XML-RPC element $name cannot be child of ".$this->xh[$the_parser]['stack'][0];
